package laborum2011.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import laborum2011.excepcion.DAOExcepcion;
import laborum2011.modelo.TempPostulantexOferta;
import laborum2011.util.ConexionBD;

public class TempPostulantexOfertaDAO extends BaseDAO {

	public List<TempPostulantexOferta> PostulantexOfertaxRuc(String ruc)
			throws DAOExcepcion {
		System.out.println("TempPostulantexOfertaDAO: obtener(String ruc)");
		String query = "select e.id_empresa, pe.id_persona, o.id_oferta, pt.id_postulante, "
				+ "po.id_postulantexoferta, e.razon_social, e.ruc, o.titulo, o.vacantes, "
				+ "o.fec_inicio, o.fec_fin, o.desc_cargo, CONCAT(pe.nombres, ' ', pe.ape_paterno, ' ', pe.ape_materno) as postulante, "
				+ "pe.tipo_documento, pe.nro_documento, pe.celular, pe.correo, po.fec_postulacion "
				+ "FROM oferta o "
				+ "JOIN empresa e on o.id_empresa = e.id_empresa "
				+ "JOIN postulantexoferta po on o.id_oferta = po.id_oferta "
				+ "JOIN postulante pt on pt.id_postulante = po.id_postulante "
				+ "JOIN persona pe on pe.id_persona = pt.id_persona "
				+ "WHERE e.estado = 1 and o.estado = 1 and e.ruc = ? Order by fec_postulacion ";

		List<TempPostulantexOferta> lista = new ArrayList<TempPostulantexOferta>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;

		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, ruc);
			rs = stmt.executeQuery();

			while (rs.next()) {
				TempPostulantexOferta vo = new TempPostulantexOferta();

				vo.setId_empresa(rs.getInt("id_empresa"));
				vo.setId_persona(rs.getInt("id_persona"));
				vo.setId_oferta(rs.getInt("id_oferta"));
				vo.setId_postulante(rs.getInt("id_postulante"));
				vo.setId_postulantexoferta(rs.getInt("id_postulantexoferta"));
				vo.setRazon_social(rs.getString("razon_social"));
				vo.setRuc(rs.getString("ruc"));
				vo.setTitulo(rs.getString("titulo"));
				vo.setVacantes(rs.getInt("vacantes"));
				vo.setFec_inicio(rs.getDate("fec_inicio"));
				vo.setFec_fin(rs.getDate("fec_fin"));
				vo.setDesc_cargo(rs.getString("desc_cargo"));
				vo.setPostulante(rs.getString("postulante"));
				vo.setTipo_documento(rs.getString("tipo_documento"));
				vo.setNro_documento(rs.getString("nro_documento"));
				vo.setCelular(rs.getString("celular"));
				vo.setCorreo(rs.getString("correo"));
				vo.setFec_postulacion(rs.getDate("fec_postulacion"));

				lista.add(vo);
			}

		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return lista;

	}
}
